#ifndef UTIL_H
#define UTIL_H
#include <fcntl.h>
#include <openssl/err.h>
#include <openssl/evp.h>
#include <stdio.h>
#include <stdlib.h>
#include <strings.h>
#include "toml.h"

#define JWT_LEN 244

typedef struct server_configure_s{
    char host[200];
    char port[6];
    int work_num;
    char port2[6];
}server_configure;

typedef struct sql_config_s{
    char host[200];
    char user_name[512];
    char pass_word[512];
    char data_base[50];
    int  port;
}sql_config;


int conf_init(toml_table_t** conf);
int conf_server(server_configure* s);
int conf_mysql(sql_config *s);
// 算法参数:"SHA256"、"MD5"...
// 成功时返回由 OPENSSL_malloc 分配的哈希值
// 失败返回 NULL
// ***使用后如果不再需要需调用 OPENSSL_free(p);释放,
char *get_hash(const char *filename, const char *algorithm);
int verify_hash(const char *filename, const char *algorithm,
                const char *expected_hash);

// ***签发的jwt由jwt库自动分配内存，如果不再需要了需要调用
// l8w8jwt_free(jwt);释放内存
char *get_jwt(char *user_name);
int verify_jwt(char *user_name, char *user_jwt);

char random_char();
void random_salt(char* salt);

int deal_path(char *path, char *ret_path);
int path_exist(char *path);
char* strftime_local();
#endif
